/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package notificacoes;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;

public class EnviaEmail {

    public EnviaEmail(List<Destinatario> a, String Arquivo, boolean anexo) throws EmailException, MalformedURLException {
        enviaEmailComAnexo(a, Arquivo);
    }

    public EnviaEmail(List<Destinatario> a) throws EmailException, MalformedURLException {
        enviaEmailSimples(a);
    }

    /**
     * envia email simples(somente texto)
     * @throws EmailException
     */
    public void enviaEmailSimples(List<Destinatario> a) throws EmailException {
        int i = 0;
        String msg = "";
        if (!a.isEmpty()) {
            SimpleEmail email = new SimpleEmail();
            email.setDebug(false);
            email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
            while (i < a.size()) {
                email.addTo(a.get(i).getEmail(), a.get(i).getDiscente()); //destinatario
                msg = a.get(i).getMensagem();
                i++;
            }
            email.setFrom("3gnotifier@gmail.com", "3G-NOTIFIER"); // remetente
            email.setSubject("[NOTIFICACAO]"); // assunto do e-mail
            email.setMsg(msg); //conteudo do e-mail
            email.setAuthentication("3gnotifier@gmail.com", "3gnotifierorange");
            email.setSmtpPort(465);
            email.setSSL(true);
            email.setTLS(true);
            email.send();
        }
    }

    /**
     * envia email com arquivo anexo
     * @throws EmailException
     */
    public void enviaEmailComAnexo(List<Destinatario> a, String Arquivo) throws EmailException {

        // cria o anexo 1.
        if (!a.isEmpty()) {
            EmailAttachment anexo1 = new EmailAttachment();
            anexo1.setPath(Arquivo); //caminho do arquivo
            anexo1.setDisposition(EmailAttachment.ATTACHMENT);
            anexo1.setDescription("Exemplo de arquivo anexo");
            anexo1.setName("create_tables.sql");
            // configura o email
            MultiPartEmail email = new MultiPartEmail();
            email.setDebug(false);
            email.setHostName("smtp.gmail.com"); // o servidor SMTP para envio do e-mail
            int i = 0;
            String msg = "";
            while (i < a.size()) {
                email.addTo(a.get(i).getEmail(), a.get(i).getDocente()); //destinatÃ¡rio
                msg = a.get(i).getMensagem();
                i++;
            }
            //email.addReplyTo("fernando.correia.jr@gmail.com", "Fernando");
            email.setFrom("3gnotifier@gmail.com", "3G-NOTIFIER"); // remetente
            email.setSubject("[NOTIFICACAO]"); // assunto do e-mail
            email.setMsg(msg); //conteudo do e-mail
            email.setAuthentication("3gnotifier@gmail.com", "3gnotifierorange");
            email.setSmtpPort(465);
            email.setSSL(true);
            email.setTLS(true);
            // adiciona arquivo(s) anexo(s)
            email.attach(anexo1);
            // envia o email
            email.send();
        }
    }

    /**
     * @param args
     * @throws EmailException
    @throws MalformedURLException
     */
    public static void main(String[] args) throws EmailException, MalformedURLException {
        List<Destinatario> items = new ArrayList<Destinatario>();
        items.add(new Destinatario(0, "No docente", "No discente", "075", "000006666", "Esse é mais um teste do seu 3G-NOTIFIER\n\n\n\n\n\n\nInté", "fernandus16@gmail.com"));
        items.add(new Destinatario(0, "No docente", "No discente", "075", "000006666", "Esse é mais um teste do seu 3G-NOTIFIER\n\n\n\n\n\n\nInté", "thatayster@gmail.com"));
        items.add(new Destinatario(0, "No docente", "No discente", "075", "000006666", "Esse é mais um teste do seu 3G-NOTIFIER\n\n\n\n\n\n\nInté", "fernando.correia.jr@gmail.com"));

        new EnviaEmail(items, "C:\\Documents and Settings\\Fernando\\Desktop\\Scripts\\create_tables.sql", true);
        new EnviaEmail(items);
        /*enviaEmailSimples("fernandus16@gmail.com", "Fernando","3G-NOTIFIER teste5a", "Fernando");
        enviaEmailComAnexo("fernandus16@gmail.com", "Fernando","3G-NOTIFIER teste5B", "Fernando",
        "C:\\Documents and Settings\\Fernando\\Desktop\\Scripts\\create_tables.sql");*/
        //É POSSIVEL:  enviaEmailFormatoHtml();
    }
}
